package cl.clientesoa;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.Toast;
import cl.clientesws.AnotacionSOAWS;

public class Tab_AnotacionSoa extends Activity {

	private Button btn_add;
	private Button btn_update;
	private Button btn_delete;
	private Button btn_findall;
	private Button btn_find;
	private AnotacionSOAWS aws = new AnotacionSOAWS();
	private String respuesta;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		/* carga la vista del layout opcionessoa */
		this.setContentView(R.layout.opcionessoa);
		btn_add = (Button) findViewById(R.id.btn_add);
		btn_update = (Button) findViewById(R.id.btn_update);
		btn_delete = (Button) findViewById(R.id.btn_delete);
		btn_findall = (Button) findViewById(R.id.btn_allfind);
		btn_find = (Button) findViewById(R.id.btn_find);
		btn_add.setOnClickListener(clickbtn);
		btn_update.setOnClickListener(clickbtn);
		btn_delete.setOnClickListener(clickbtn);
		btn_findall.setOnClickListener(clickbtn);
		btn_find.setOnClickListener(clickbtn);
	}

	// evento on Click que se genera con los botones
	private OnClickListener clickbtn = new OnClickListener() {
		public void onClick(View v) {
			switch (v.getId()) {
			case R.id.btn_add:
				// llamada al metodo ingresar anotacion
				alertDialodIngreasarAnotacion();
				break;
			case R.id.btn_update:
				// llamada al metodo actualizar persona
				//alertDialodActualizarPersona();
				break;
			case R.id.btn_delete:
				// llamada al metodo eliminar persona
				//alertDialodDeletePersona();
				break;
			case R.id.btn_allfind:
				// llamada al metodo buscar todas las personas
				alertDialodFindAllAnotacion();
				break;
			case R.id.btn_find:
				// llamada al metodo de buscar persona
				//alertDialodFindPersona();
				break;
			}
		}
	};

	/**
	 * Metodo que ingresa los datos de una anotacion.
	 * 
	 * @return void
	 * @author Manuel
	 */
	public void alertDialodIngreasarAnotacion() {
		LayoutInflater factory = LayoutInflater.from(this); 
		final View textEntryView = factory.inflate(R.layout.ingresaranotacion,
				null);
		AlertDialog.Builder alert = new AlertDialog.Builder(this); 
		alert.setTitle("Ingrese Anotacion");
		alert.setView(textEntryView);
		alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
			public void onClick(DialogInterface dialog, int whichButton) {
				/*
				 * declara variables de los compontes que se encuentran en la
				 * vista del layout del AlertDialog
				 */
				EditText idAlumno;
				EditText idSubsector;
				RadioButton radio_negativa;
				RadioButton radio_neutra;
				RadioButton radio_positiva;
				DatePicker fecha;
				EditText descripcion;
				idAlumno = (EditText) textEntryView
						.findViewById(R.id.id_alumno);
				idSubsector = (EditText) textEntryView
						.findViewById(R.id.id_subsector);
				radio_negativa = (RadioButton) textEntryView
						.findViewById(R.id.radioNegativa);
				radio_neutra = (RadioButton) textEntryView
						.findViewById(R.id.radioNeutra);
				radio_positiva = (RadioButton) textEntryView
						.findViewById(R.id.radioPositiva);
				fecha = (DatePicker) textEntryView.findViewById(R.id.fecha);
				descripcion = (EditText) textEntryView.findViewById(R.id.descripcion);
				// extrae el valor que fue escrito en los EditText por el
				// usuario
				int idAl = Integer.parseInt(idAlumno.getText().toString());
				int idAn = 1;
				int idSu = Integer.parseInt(idSubsector.getText().toString());
				// le da un valor al sexo segun radioButton seleccionado
				int tipoAnotacion = 0;
				if (radio_negativa.isChecked()) {
					tipoAnotacion = 1;
				}
				if (radio_neutra.isChecked()) {
					tipoAnotacion = 2;
				}
				if (radio_positiva.isChecked()) {
					tipoAnotacion = 3;
				}
				//Se obtiene la fecha y se transforma a date
				SimpleDateFormat formatfecha = new SimpleDateFormat("yyyy-MM-dd");
				String strFecha = "" + fecha.getYear() + "-" + fecha.getMonth() + "-" + fecha.getDayOfMonth();
				Date fe = null;
				try {
					fe = formatfecha.parse(strFecha);
				} catch (ParseException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}	
				String des = descripcion.getText().toString();
				if ((idAl == 0) || (idSu == 0)
						|| (tipoAnotacion == 0) || (fe == null) || (des.equals(""))) {
					alertDialodIngreasarAnotacion();
				} else {
					// llama al Servicio Web addPersona()
					String resultado = aws.addAnotacion(fe, des, idAl, idAn, tipoAnotacion, idSu);
					Toast.makeText(getBaseContext(), resultado,
							Toast.LENGTH_SHORT).show();
					return;
				}
			}
		});
		alert.setNegativeButton("Cancel",
				new DialogInterface.OnClickListener() {
					public void onClick(DialogInterface dialog, int which) {
						return;
					}
				});
		alert.show();
	}

	/**
	 * Metodo que actualiza los datos de una persona.
	 * 
	 * @return void
	 * @author MariaJose
	 */
	/*public void alertDialodActualizarPersona() {
		LayoutInflater factory = LayoutInflater.from(this);
		final View textEntryView = factory
				.inflate(R.layout.updatepersona, null);
		AlertDialog.Builder alert = new AlertDialog.Builder(this);
		alert.setTitle("Actualizar Persona");
		alert.setView(textEntryView);
		alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
			public void onClick(DialogInterface dialog, int whichButton) {
				EditText textorutonombre;
				EditText textonuevo;
				RadioButton radio_nombre;
				RadioButton radio_rut;
				RadioButton radio_digito;
				RadioButton radio_sexo;
				textorutonombre = (EditText) textEntryView
						.findViewById(R.id.edit_rut_nombre);
				textonuevo = (EditText) textEntryView
						.findViewById(R.id.edit_nuevovalor);
				radio_nombre = (RadioButton) textEntryView
						.findViewById(R.id.radionombre);
				radio_rut = (RadioButton) textEntryView
						.findViewById(R.id.radiorut);
				radio_digito = (RadioButton) textEntryView
						.findViewById(R.id.radiodigito);
				radio_sexo = (RadioButton) textEntryView
						.findViewById(R.id.radiosexo);
				String rutonombre = textorutonombre.getText().toString();
				String nuevocampo = textonuevo.getText().toString();
				int opcionRbtn = -1;
				if (radio_nombre.isChecked()) {
					opcionRbtn = 0;
				}
				if (radio_rut.isChecked()) {
					opcionRbtn = 1;
				}
				if (radio_digito.isChecked()) {
					opcionRbtn = 2;
				}
				if (radio_sexo.isChecked()) {
					opcionRbtn = 3;
				}
				if (rutonombre.equals("") || nuevocampo.equals("")
						|| opcionRbtn == -1) {
					alertDialodActualizarPersona();
				} else {
					String resultado = aws.updatePersona(rutonombre,
							opcionRbtn, nuevocampo);
					Toast.makeText(getBaseContext(), resultado,
							Toast.LENGTH_SHORT).show();
					return;
				}
			}
		});
		alert.setNegativeButton("Cancel",
				new DialogInterface.OnClickListener() {
					public void onClick(DialogInterface dialog, int which) {
						return;
					}
				});
		alert.show();
	}

	/**
	 * Metodo que elimina una persona segun su rut.
	 * 
	 * @return void
	 * @author MariaJose
	 */
	/*public void alertDialodDeletePersona() {
		LayoutInflater factory = LayoutInflater.from(this);
		final View textEntryView = factory
				.inflate(R.layout.deletepersona, null);
		AlertDialog.Builder alert = new AlertDialog.Builder(this);
		alert.setTitle("Eliminar Persona");
		alert.setView(textEntryView);
		alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
			public void onClick(DialogInterface dialog, int whichButton) {
				EditText textorut;
				textorut = (EditText) textEntryView
						.findViewById(R.id.edit_rut_delete);
				String rut = textorut.getText().toString();
				if (rut.equals("")) {
					alertDialodDeletePersona();
				} else {
					String resultado = aws.deletePersona(rut);
					Toast.makeText(getBaseContext(), resultado,
							Toast.LENGTH_SHORT).show();
					return;
				}
			}
		});
		alert.setNegativeButton("Cancel",
				new DialogInterface.OnClickListener() {
					public void onClick(DialogInterface dialog, int which) {
						return;
					}
				});
		alert.show();
	}

	/**
	 * Metodo que busca a una persona.
	 * 
	 * @return void
	 * @author MariaJose
	 */
	/*public void alertDialodFindPersona() {
		LayoutInflater factory = LayoutInflater.from(this);
		final View textEntryView = factory.inflate(R.layout.findpersona, null);
		AlertDialog.Builder alert = new AlertDialog.Builder(this);
		alert.setTitle("Buscar Persona");
		alert.setView(textEntryView);
		alert.setPositiveButton("Buscar",
				new DialogInterface.OnClickListener() {
					public void onClick(DialogInterface dialog, int whichButton) {
						EditText textoFind;
						textoFind = (EditText) textEntryView
								.findViewById(R.id.edit_find_persona);
						String buscar = textoFind.getText().toString();
						if (buscar.equals("")) {
							alertDialodFindPersona();
						} else {
							/**
							 * realiza la llamada de buscar al Ws
							 */
							/*respuesta = aws.findPersona(buscar);
							Toast.makeText(Tab_PersonasSoa.this, respuesta,
									Toast.LENGTH_LONG).show();
							return;
						}
					}
				});
		alert.setNegativeButton("Salir", new DialogInterface.OnClickListener() {
			public void onClick(DialogInterface dialog, int which) {
				return;
			}
		});
		alert.show();
	}

	/**
	 * Metodo que busca a todas las personas segun parametro de busqueda.
	 * 
	 * @return void
	 * @author MariaJose
	 */
	public void alertDialodFindAllAnotacion() {
		LayoutInflater factory = LayoutInflater.from(this);
		final View textEntryView = factory.inflate(R.layout.findallanotacion, null);
		AlertDialog.Builder alert = new AlertDialog.Builder(this);
		alert.setTitle("Buscar registros con :");
		alert.setView(textEntryView);
		alert.setPositiveButton("Buscar",
				new DialogInterface.OnClickListener() {
					public void onClick(DialogInterface dialog, int whichButton) {
						//EditText textoFind;
						//textoFind = (EditText) textEntryView
								//.findViewById(R.id.edit_find_persona);
						//String buscar = textoFind.getText().toString();
						/*
						 * realiza la llamada de buscar al Ws y lanza una nueva
						 * actividad para mostrar los datos de la busqueda.
						 */
						respuesta = aws.findAll();
						Intent i = new Intent();
						i.setClass(Tab_AnotacionSoa.this,
								ResultadoFindAnotacion.class);
						// entrega el Json que es devuekto por el servicio
						i.putExtra("datos", respuesta);
						startActivity(i);
						return;
					}
				});
		alert.setNegativeButton("Salir", new DialogInterface.OnClickListener() {
			public void onClick(DialogInterface dialog, int which) {
				return;
			}
		});
		alert.show();
	}

}
